From: Carlos Garnacho Date: Fri, 7 Oct 2016 21:46:27 +0000 (+0200) Subject: st: Ignore filtered selection events not meant to our clipboard window X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~696 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a22e9ce9cde93742320c015fc20af46b6f547b1b;p=gnome-shell.git st: Ignore filtered selection events not meant to our clipboard window Other windows like the mutter Xwayland selection bridges might deal with the clipboard, which would result in events visible on st-clipboard event filters. In order to avoid unintended results, ignore events that are not meant for the clipboard window. https://bugzilla.gnome.org/show_bug.cgi?id=760745 --- diff --git a/src/st/st-clipboard.c b/src/st/st-clipboard.c index 556721d7f..d5b1395e4 100644 --- a/src/st/st-clipboard.c +++ b/src/st/st-clipboard.c @@ -117,6 +117,7 @@ st_clipboard_provider (GdkXEvent *xevent_p, GdkDisplay *display = gdk_display_get_default (); if (xev->type != SelectionRequest || + xev->xany.window != clipboard->priv->clipboard_window || !clipboard->priv->clipboard_text) return GDK_FILTER_CONTINUE; @@ -233,13 +234,15 @@ st_clipboard_x11_event_filter (GdkXEvent *xevent_p, { XEvent *xev = (XEvent *) xevent_p; EventFilterData *filter_data = user_data; + StClipboardPrivate *priv = filter_data->clipboard->priv; Atom actual_type; int actual_format, result; unsigned long nitems, bytes_after; unsigned char *data = NULL; GdkDisplay *display = gdk_display_get_default (); - if(xev->type != SelectionNotify) + if(xev->type != SelectionNotify || + xev->xany.window != priv->clipboard_window) return GDK_FILTER_CONTINUE; if (xev->xselection.property == None)